#ifndef EXCURSION_H
#define EXCURSION_H

#include "IExcursion.h"
#include "ListaImp.h"
#include "Tupla.h"
#include "ICiudad.h"

class Ciudad;
class Excursion : public IExcursion{

	friend ostream &operator<<(ostream&, const IExcursion &);

private:
	nat nroExcursion;
	Cadena fechaPartida;
	Puntero<Lista<Tupla<pCiudad,nat>>> itinerario;
	nat costoTotal;

public:
	Excursion(const nat &nro, const Cadena &fechaP);
	virtual ~Excursion();

	nat ObtenerNro() const;
	Cadena ObtenerFechaPartida() const;
	void AgregarCiudad(const Tupla<pCiudad, nat> & escala);
	void incrementarCosto(const nat &costoC);
	nat ObtenerCostoTotal() const;
	Puntero<Iterador<Tupla<pCiudad,nat>>> ObtenerItinerario() const;

	bool operator==(const IExcursion& e) const;

	bool operator<(const IExcursion& e) const;
	bool operator>(const IExcursion& e) const;
};


#endif